package com.ruoyi.square.comment.service.impl;

import java.util.List;

import com.ruoyi.square.dynamic.mapper.DynamicMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.square.comment.mapper.CommentMapper;
import com.ruoyi.square.comment.domain.Comment;
import com.ruoyi.square.comment.service.ICommentService;

/**
 * 评论管理Service业务层处理
 * 
 * @author myd
 * @date 2025-06-06
 */
@Service
public class CommentServiceImpl implements ICommentService 
{
    @Autowired
    private CommentMapper commentMapper;

    @Autowired
    private DynamicMapper dynamicMapper;


    /**
     * 查询评论管理
     * 
     * @param commentId 评论管理主键
     * @return 评论管理
     */
    @Override
    public Comment selectCommentById(Long commentId)
    {
        return commentMapper.selectCommentById(commentId);
    }

    /**
     * 查询评论管理列表
     * 
     * @param comment 评论管理
     * @return 评论管理
     */
    @Override
    public List<Comment> selectCommentList(Comment comment)
    {
        return commentMapper.selectCommentList(comment);
    }

    /**
     * 新增评论管理
     * 
     * @param comment 评论管理
     * @return 结果
     */
    @Override
    public int insertComment(Comment comment)
    {
        // 新增评论
        int rows = commentMapper.insertComment(comment);
        // 更新动态评论数
        if (rows > 0 && comment.getDynamicId() != null) {
            // 如果有父评论，更新父评论的评论数
            if (comment.getParentId() != null) {
                commentMapper.incrementCommentCount(comment.getParentId());
            }

            // 更新动态的评论数
            if (comment.getDynamicId() != null) {
                dynamicMapper.incrementCommentCount(comment.getDynamicId());
            }
        }
        return rows;
    }

    /**
     * 修改评论管理
     * 
     * @param comment 评论管理
     * @return 结果
     */
    @Override
    public int updateComment(Comment comment)
    {
        return commentMapper.updateComment(comment);
    }

    /**
     * 批量删除评论管理
     * 
     * @param commentIds 需要删除的评论管理主键
     * @return 结果
     */
    @Override
    public int deleteCommentByCommentIds(Long[] commentIds)
    {
        // 先查询要删除的评论
        List<Comment> comments = commentMapper.selectCommentListByIds(commentIds);
        // 删除评论
        int rows = commentMapper.deleteCommentByCommentIds(commentIds);
        // 更新动态评论数
        if (rows > 0) {
            for (Comment comment : comments) {
                // 如果有父评论，减少父评论的评论数
                if (comment.getParentId() != null) {
                    commentMapper.decrementCommentCount(comment.getParentId());
                }

                // 减少动态的评论数
                if (comment.getDynamicId() != null) {
                    dynamicMapper.decrementCommentCount(comment.getDynamicId());
                }
            }
        }
        return rows;
    }

    /**
     * 删除评论管理信息
     * 
     * @param commentId 评论管理主键
     * @return 结果
     */
    @Override
    public int deleteCommentByCommentId(Long commentId)
    {
        return commentMapper.deleteCommentByCommentId(commentId);
    }

    @Override
    public int changeStatus(Comment comment) {
        return commentMapper.updateComment(comment);
    }

    @Override
    public Boolean checkCommentExists(Long commentId) {
        if(commentId == null){
            return false;
        }else if(commentMapper.selectCommentByCommentId(commentId) == null){
            return false;
        }
        return true;
    }
}
